From 36fcea6f58fb52cb8cbfba30e74a2aead53e5f99 Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Tue, 21 Jun 2005 20:10:51 +0000 Subject: [PATCH] bitkeeper revision 1.1713.2.18 (42b8744bIGngr2TXaEsslGtXBaQ79g) Fix and re-enable hyperprivop for ptc.ga (slow path only for now) Signed-off-by: Dan Magenheimer --- xen/arch/ia64/hyperprivop.S | 8 ++++++++ xen/arch/ia64/privop.c | 6 ++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/xen/arch/ia64/hyperprivop.S b/xen/arch/ia64/hyperprivop.S index 4548d37e9f..bc92a17866 100644 --- a/xen/arch/ia64/hyperprivop.S +++ b/xen/arch/ia64/hyperprivop.S @@ -109,6 +109,10 @@ GLOBAL_ENTRY(fast_hyperprivop) cmp.eq p7,p6=XEN_HYPER_GET_RR,r17 (p7) br.sptk.many hyper_get_rr;; + // HYPERPRIVOP_PTC_GA? + cmp.eq p7,p6=XEN_HYPER_PTC_GA,r17 +(p7) br.sptk.many hyper_ptc_ga;; + // if not one of the above, give up for now and do it the slow way br.sptk.many dispatch_break_fault ;; @@ -909,3 +913,7 @@ ENTRY(hyper_set_rr) rfi ;; END(hyper_set_rr) + +ENTRY(hyper_ptc_ga) + br.spnt.many dispatch_break_fault ;; +END(hyper_ptc_ga) diff --git a/xen/arch/ia64/privop.c b/xen/arch/ia64/privop.c index c4fbcca45c..08bcecb9f5 100644 --- a/xen/arch/ia64/privop.c +++ b/xen/arch/ia64/privop.c @@ -832,10 +832,8 @@ ia64_hyperprivop(unsigned long iim, REGS *regs) regs->r8 = val; return 1; case HYPERPRIVOP_PTC_GA: - // FIXME: this doesn't seem to work yet, turned off - //(void)vcpu_ptc_ga(v,regs->r8,regs->r9); - //return 1; - break; + (void)vcpu_ptc_ga(v,regs->r8,(1L << ((regs->r9 & 0xfc) >> 2))); + return 1; case HYPERPRIVOP_ITR_D: (void)vcpu_get_itir(v,&itir); (void)vcpu_get_ifa(v,&ifa); -- 2.30.2